<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
<script>
    // 方法a，返回一个Promise对象
    function a() {
        return new Promise((r, j) => {
            console.log('a()')
            r('a()')
        })
    }

    // 方法b，返回一个Promise对象
    function b() {
        return new Promise((r, j) => {
            console.log('b()')
            r('b()')
        })
    }

    function c() {
        return new Promise((r, j) => {
            console.log('c()')
            r('c()')
        })
    }

    let d = new Promise((r, j) => {
        console.log('d()')
        r('d()')
    })

    // 必须等三个promise全部执行完再返回一个新的promise对象，这个新的promise对象就包含了三个promise的返回值
    const res = Promise.all([b(), a(), c(), d])
    console.log(res)
</script>
</body>

</html>
